home *** CD-ROM | disk | FTP | other *** search
- #ifndef __PMENU_HPP_
- #define __PMENU_HPP_
-
- #include "jmalloc.hpp"
- #include "input.hpp"
-
- class psub_menu;
-
- class pmenu_item
- {
- int hotkey;
- public :
- char *n,*on_off;
- psub_menu *sub;
-
- int id,xp;
- pmenu_item *next;
- pmenu_item(int ID, char *name, char *on_off_flag, int Hotkey, pmenu_item *Next);
- pmenu_item(char *Name, psub_menu *Sub, pmenu_item *Next, int xpos=-1);
- char *name() { return n; }
- pmenu_item *find_id(int search_id);
- pmenu_item *find_key(int key);
- void draw (jwindow *parent, int x, int y, int w, int top, window_manager *wm, int active);
- void draw_self (jwindow *parent, int x, int y, int w, int top, window_manager *wm, int active);
- int handle_event(jwindow *parent, int x, int y, int w, int top, window_manager *wm, event &ev);
- int own_event(event &ev);
- ~pmenu_item();
- } ;
-
-
- class psub_menu
- {
- pmenu_item *first;
- psub_menu *next;
- int active;
- window_manager *wm;
- jwindow *win;
- pmenu_item *item_num(int x) { pmenu_item *p=first; while (x-- && p) p=p->next; return p; }
- public :
- void calc_size(int &w, int &h, window_manager *wm);
- pmenu_item *find_id(int search_id);
- pmenu_item *find_key(int key);
- psub_menu(pmenu_item *First, psub_menu *Next)
- { first=First; Next=Next; win=0; active=0; }
- int handle_event(jwindow *parent, int x, int y, window_manager *wm, event &ev);
- void draw(jwindow *parent, int x, int y, window_manager *wm);
- void hide(jwindow *parent, int x, int y, window_manager *wm);
- int own_event(event &ev);
- ~psub_menu();
- } ;
-
- class pmenu
- {
- window_manager *wm;
- jwindow *bar;
- pmenu_item *top,*active;
- int itemw(pmenu_item *p, window_manager *wm)
- { return strlen(p->name())*wm->font()->width()+2; }
- int itemx(pmenu_item *p, window_manager *wm);
- pmenu_item *inarea(int mx, int my, image *screen, window_manager *wm);
- public :
- ~pmenu();
- pmenu(int X, int Y, pmenu_item *first, image *screen, window_manager *wm);
- void move(int new_x, int new_y);
- void draw(image *screen, window_manager *wm, int top_only=0);
- int handle_event(event &ev, image *screen, window_manager *wm);
-
- } ;
-
- #endif
-
-
-